// 定义一个二叉树节点类
class TreeNode {
    int val; // 节点的值
    TreeNode left; // 左子节点
    TreeNode right; // 右子节点

    TreeNode(int x) { // 构造函数
        val = x;
    }
}

public class Solution {
    // 计算二叉树的最大深度
    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0; // 如果节点为空，深度为0
        } else {
            int left = maxDepth(root.left); // 计算左子树的深度
            int right = maxDepth(root.right); // 计算右子树的深度
            return Math.max(left, right) + 1; // 返回左右子树深度的最大值加1
        }
    }

    public static void main(String[] args) {
        // 创建一个示例二叉树
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);
        root.right = new TreeNode(3);
        root.left.left = new TreeNode(4);
        root.left.right = new TreeNode(5);

        // 创建Solution对象并计算最大深度
        Solution solution = new Solution();
        int depth = solution.maxDepth(root);
        System.out.println("最大深度为：" + depth); // 输出：最大深度为：3
    }
}